package com.example.util;

import cn.hutool.core.date.DateUtil;
import cn.hutool.jwt.JWT;
import com.example.security.LoginUser;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;

@Slf4j
public class JwtUtil {

    public static final byte[] SECRET_KEY = "LibraryBackend".getBytes();
    private static final long EXPIRE_SECONDS = 86400; // 24小时

    // 生成Token
    public static String createToken(LoginUser loginUser) {
        return JWT.create()
                .setPayload("loginUser", loginUser)
                .setExpiresAt(DateUtil.offsetSecond(new Date(), (int) EXPIRE_SECONDS))
                .setKey(SECRET_KEY)
                .sign();
    }

    /**
     * 验证 Token 是否有效
     * @param token JWT Token
     * @return 是否有效
     */
    public static boolean verifyToken(String token) {
        if (token == null || token.trim().isEmpty()) {
            return false;
        }
        try {
            // 验证签名和有效期
            return JWT.of(token).setKey(SECRET_KEY).verify();
        } catch (Exception e) {
            // 可以在这里记录日志
             log.warn("Token verification failed: {}", e.getMessage());
            return false;
        }
    }
}